package com.ynet.middleground.riskmanage.bean;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;

import com.ynet.core.common.BaseReqObj;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * @author liulx
 * @description 保理池出池数据参数信息
 * @date 2020-09-28 16:37
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "保理池出池数据参数信息", description = "保理池出池数据参数信息")
public class BlchOutReq extends BaseReqObj {

    private static final long serialVersionUID = 5142319453140382115L;

    @ApiModelProperty(value = "单据类型 0 发票; 1 费用确认单;(若是发票，根据单据编号+序列号可确定唯一；若是费用确认单，根据单据编号+币种+序列号确定唯一)",
        notes = "单据类型 0 发票; 1 费用确认单;(若是发票，根据单据编号+序列号可确定唯一；若是费用确认单，根据单据编号+币种+序列号确定唯一)", required = true)
    @Size(max = 1)
    @NotEmpty(message = "单据类型不能为空")
    private String orderType;

    @ApiModelProperty(value = "单据编号（若是发票，传值：发票代码拼接发票号码，无分隔符，例：03702190010507961884；若是费用确认单，传值：提单号，例：177XHJHJQ0384FB）",
        notes = "单据编号（若是发票，传值：发票代码拼接发票号码，无分隔符，例：03702190010507961884；若是费用确认单，传值：提单号，例：177XHJHJQ0384FB）",
        required = true)
    @NotEmpty(message = "单据编号不能为空")
    private String orderNum;

    @ApiModelProperty(value = "序列号(若本次上传status=1更新，那么序列号传值和新出池时，传的序列号相同)",
        notes = "序列号(若本次上传status=1更新，那么序列号传值和新出池时，传的序列号相同)", required = true)
    @NotEmpty(message = "序列号不能为空")
    @Size(max = 36)
    private String serialNo;

    @ApiModelProperty(value = "买方名称", notes = "买方名称")
    private String buyerName;

    @ApiModelProperty(value = "币种", notes = "币种", required = true)
    @NotEmpty(message = "币种不能为空")
    private String currency;

    @ApiModelProperty(value = "发票/费用确认金额（核心票面）", notes = "发票/费用确认金额（核心票面）")
    private String coreAmount;

    @ApiModelProperty(value = "发票/费用确认金额(折人民币)", notes = "发票/费用确认金额(折人民币)")
    private String rmbAmount;

    @ApiModelProperty(value = "开票日期/开船日", notes = "开票日期/开船日")
    private String invoiceSailingDate;

    @ApiModelProperty(value = "应收账款到期日", notes = "应收账款到期日")
    private String accountsReceivableDate;

    @ApiModelProperty(value = "应收账款最晚付款日", notes = "应收账款最晚付款日")
    private String accountsReceivableLatestPaymentDate;

    @ApiModelProperty(value = "应收账款余额", notes = "应收账款余额")
    private String accountsReceivableBalance;

    @ApiModelProperty(value = "补开发票日期", notes = "补开发票日期")
    private String supplementaryInvoiceDate;

    @ApiModelProperty(value = "补开发票号", notes = "补开发票号")
    private String supplementaryInvoiceNo;

    @ApiModelProperty(value = "实际付款日", notes = "实际付款日")
    private String actualPaymentDate;

    @ApiModelProperty(value = "实际付款金额", notes = "实际付款金额")
    private String actualPaymentAmount;

    @ApiModelProperty(value = "状态（0 新出池/ 1 更新）", notes = "状态（0 新出池/ 1 更新）")
    @Size(max = 1)
    private String status;

}
